#ifndef _RETRO_OPTIONS
#define _RETRO_OPTIONS

namespace Retro
{
  namespace Creator
  {
    namespace Dialog
    {
      enum OptionsPage
      {
        OptionsGeneral,
        OptionsEditor,
        OptionsAdvanced,
        OptionsFirst  = OptionsGeneral,
        OptionsLast   = OptionsAdvanced,
      };

      class Options : public DialogBase
      {
      private:
        struct
        {
          GUI::ColorPicker  mGridColor;
          Label   mGridColorLabel;
        };

        TabHeader       mTabs;
        Button          mOK;
        Button          mCancel;
        Separator       mSeparator;
        LayoutElement*  mContent;
        LayoutElement   mPages[OptionsLast - OptionsFirst + 1];
        Gdip::Font      mHeadingFont;

        static PCTSTR   tabTextGetter(TabItem* iItem);

      protected:
        VOID  onNotify(Event::NotifyEvent& iEvent);
        VOID  onLoad();
        VOID  onUnload();

      public:
        VOID  setState(const FrameState& iState);
        VOID  getState(FrameState& oState);

        Options();
        ~Options();
      };
    } // namespace Dialog
  } // namespace Creator
} // namespace Retro

#endif